Moessner's Theorem: An Exercise in Coinductive Reasoning in Coq
نویسندگان
چکیده
Moessner’s Theorem describes a construction of the sequence of powers (1, 2, 3, . . . ), by repeatedly dropping and summing elements from the sequence of positive natural numbers. The theorem was presented by Moessner in 1951 without a proof and later proved and generalized in several directions. More recently, a coinductive proof of the original theorem was given by Niqui and Rutten. We present a formalization of their proof in the Coq proof assistant. This formalization serves as a non-trivial illustration of the use of coinduction in Coq. During the formalization, we discovered that Long and Salié’s generalizations could also be proved using (almost) the same bisimulation.
منابع مشابه
Verification of redecoration for infinite triangular matrices using coinduction
Finite triangular matrices with a dedicated type for the diagonal elements can be profitably represented by a nested data type, i. e., a heterogeneous family of inductive data types, while infinite triangular matrices form an example of a nested coinductive type, which is a heterogeneous family of coinductive data types. Redecoration for infinite triangular matrices is taken up from previous wo...
متن کاملCoinductive Formal Reasoning in Exact Real Arithmetic
In this article we present a method for formally proving the correctness of the lazy algorithms for computing homographic and quadratic transformations — of which field operations are special cases— on a representation of real numbers by coinductive streams. The algorithms work on coinductive stream of Möbius maps and form the basis of the Edalat–Potts exact real arithmetic. We use the machiner...
متن کاملA proof of Moessner's theorem by coinduction
We present a coinductive proof of Moessner’s theorem. This theorem describes the construction of the stream (1,2,3, . . .) (for n≥ 1) out of the stream of positive natural numbers by repeatedly dropping and summing elements. Our formalisation consists of a direct translation of the operational description of Moessner’s procedure into the equivalence of—in essence—two functional programs. Our pr...
متن کاملProgramming and Reasoning with Infinite Structures Using Copatterns and Sized Types
Inductive data such as lists and trees is modeled category-theoretically as algebra where construction is the primary concept and elimination is obtained by initiality. In a more practical setting, functions are programmed by pattern matching on inductive data. Dually, coinductive structures such as streams and processes are modeled as coalgebras where destruction (or transition) is primary and...
متن کاملCorrect-by-Construction Model Transformations from Partially Ordered Specifications in Coq
This paper sketches an approach to the synthesis of provably correct model transformations within the Coq theorem prover, an implementation of Coquand and Huet’s Calculus of Inductive Constructions. It extends work done by Poernomo on proofs-as-model-transformations in the related formalism of Martin-Löf predicative Constructive Type Theory. We show how the impredicative theory of Coq, together...
متن کامل